画布 1
文件系统
  文件系统的基本概念
    文件的概念
      裸机上具有完整意义的信息集合,有一个文件名作为标识
      ① 文件是具有符号名的信息(数据)项的集合
      ② 文件是具有符号名的记录的集合
    基本单位
      信息项
      记录
    文件分类
    文件的属性
      文件名:每个文件有一个给定的名字，这个名字是由串描述且由文件内容来表示，包括文件符号名和内部标识符。(给定一个名字来唯一标记文件.)
        用户使用文件符号名来标记文件
        系统使用内部标志符来标记文件
      文件拓展
        标记文件的使用特征
      文件属性
        属性字:文件类别、保护级
    文件系统
      文件系统是操作系统中负责管理和存取文件信息的软件机构。
      组成
        数据结构
        管理程序
      功能
        用户视角
          “按名存取”的功能
        系统视角
          辅存空间管理
          文件集合管理
          文件保护
    文件组织两种结构
      逻辑结构(用户角度)
      物理结构(系统角度)
        在物理存储器上的表现形式
      逻辑记录
        文件中按信息在逻辑上的独立含义来划分的信息单位,对文件进行存取操作的基本单位.在用户视角上面的一个文件.用户视角下的一个文件.
      物理记录
        在存储介质上,由连续信息组成的一个区域称为磁盘块,也可以叫物理记录
  文件的逻辑结构与存取方法
    文件的逻辑结构
      流式文件
        流式文件是相关的有序字符的集合，是无结构的。(仅仅是一堆字节组成的字符的集合)
        流式文件是按信息的个数或以特殊字符为界进行存取的。
      记录式文件
        记录式文件是一种有结构的文件。这种文件在逻辑上总是被看成一组连续顺序的记录的集合。
      变长记录
        每个逻辑记录大小会变化
      定长记录
        每个逻辑记录大小不变
    文件存取方法
      顺序存取
        后一次存取总是在前一次存取的基础上进行的。
只有取完第一个才能取第二个
      随机存取
        用户以任意次序请求某个记录。
可以随便取第n个元素
  文件的物理结构
    连续文件
      一个文件分配在磁盘连续区域的物理块
      文件在文件目录里面需要提供文件文件符号名,存放文件的第一个磁盘块块号,还有文件占据了多少个磁盘块
      动态性不足,但是不需要额外的空间开销,效率高
    串联文件
      就是文件结构是按顺序串联的块组成的,文件的信息存在若干个物理块中,每个物理块做末一个字作为链接字用来指示后续物理块的物理地址.
      文件在文件目录里面需要提供文件文件符号名,存放文件的第一个磁盘块块号,剩下的磁盘块号可以通过每个磁盘块的链接字来指示.
      文件分配表FAT
        把链接指针按顺序集中存放，构成盘文件映射表/文件分配表(FAT),串联文件的链接字不再每块里面,而是在一个统一的表里面,其中FAT的第n个元素为m代表:第n块磁盘块的下一个块是m
        整个磁盘设置一张FAT表，每个盘块对应一个表目，存放连接文件各物理块的指针。
    索引文件
      为每个文件建立逻辑块号和物理块号的对照表.文件由数据文件和索引表构成。这种文件称为索引文件。 可以通过查询索引表找到每个文件的第n块逻辑块对应物理块块号
      组织
        直接索引
          索引表就是存储数据的物理块块号
        一级间接索引
          文件目录项中有一组表项，其内容登记的是第一级索引表块的块号。第一级索引表块中的索引表项登记的是文件逻辑记录所在的磁盘块号。
        二级间接索引
          文件目录项中有一组表项，其内容登记的是第二级索引表块的块号。第二级索引表块中的索引表项登记的第一级索引表块的块号，第一级索引表项中登记的是文件逻辑记录所在的磁盘块号。
    UNIX文件系统
      ① 树型文件目录结构
      ② 可安装拆卸的文件系统
      ③ 文件是无结构的字符流式文件
      ④ 将外部设备与文件一样对待
      UNIX索引表概述
        UNIX文件系统里面磁盘块分成两个部分,一个是存放索引的索引磁盘块,一个是存放数据的磁盘块,还有一种就是存放间接索引表的
        索引磁盘块里面有
          文件所有者标识
          文件类型
          文件存取许可权
          地址索引表
            UNIX第七版本
              小型文件
                小于8*磁盘块大小的文件
                八个索引表表项都是直接索引的
              大型文件
                大于小型文件,小于7*256*磁盘块大小的文件
                索引表的前7个元素都是一级间接索引
              巨型文件
                大于大型文件
                索引表前7个元素用于一级间接索引,最后一个用于二级间接索引
            UNIX V
              索引表一共有13个表项
              其中前10个用于直接索引
              第11个用于一级间接索引
              第12个用于二级间接索引
              第13个用于三级间接索引
            间接索引的计算方法:磁盘块块大小/一个索引项占据的存储空间,就是一个间接索引能存放的下一级索引/数据块的个数
            几级间接索引代表要访问几次磁盘块才能找到数据块,一般来说n级间接索引指向n-1级间接索引
          文件联结数目
    随机访问开销太大
  文件目录
    文件目录
      文件目录是记录文件名字,存放地址和其他有关文件的说明信息和控制信息的数据结构.文件目录由文件目录项组成,一个文件目录项记录了一个文件的信息.
        一级文件目录:已建立的文件名、存放地址和有关的说明信息都放在一张表里面就称为一级文件目录
          特点:简单、但是检索时间长,不运行有重名的文件出现
        树型文件目录:目录文件就包含了这个目录下面所有数据文件和目录文件对应的文件目录项.数据文件一定在树叶上,这样一个目录是一层.
        文件目录就包含了这个目录里面所有文件对应的文件目录项的集合.文件目录项可以认为是文件名+FCB的集合.
    目录文件
      目录文件就是说明文件目录在系统里面是以目录文件的形式存在的,是一个具体的文件,只不过这个文件代表了目录,而不是普通的数据.
    文件目录项
      记录这个目录下面每一个文件的信息.所以说文件目录就是由若干个文件目录项组成的数组组成的.
一个实例目录文件就是由若干个表示该目录下的文件的文件目录项组成的
        组成
          文件名
          逻辑结构
          物理结构
            如果是连续文件,就代表文件第一块物理地址和块数
            如果是串联文件,就代表文件第一块物理地址
            如果是索引文件,就代表索引表地址.
          其他管理信息
    文件路径名
      多级目录中，文件的路径名是由根目录到该文件的通路上所有目录文件符号名和该文件的符号名组成的字符串，相互之间用分隔符分隔。
从根节点到这个文件经过的所有目录文件符号名
  文件存储空间管理
    FAT16表所有物理块的下一个块的集合
    位示图
      利用二进制的一位来表示磁盘中的一个盘块的使用情况：0表示空闲，1表示已分配。
    UNIX文件存储空间的管理
      引导块
      管理块
        管理空闲磁盘块的数据结构
        其中有直接管理的空闲块数s_nfree
        还有空闲块号栈s_free
          成组链接法
            空闲磁盘块管理采用成组链接法，即将空闲表和空闲链两中方法相结合
            其中每一个空闲块号栈s_free里面都有100个元素,其中99个存储了空闲磁盘块的块号,最后一个s_free[0]存储的就是下一组管理块的地址,下一组管理块存储的也是100个s_free元素,也是前99个是空闲磁盘块块号,最后一个是下一个管理块,构成了一个链表结构.(前99个是实际,最后一个是下一个管理块块号.)
          分配算法
            s_nfree-1
            如果s_nfree为0了,就把s_free[0]也就是下一个管理块载入到内存中.
          回收算法
            s_nfree++;
            如果达到了100,就把当前管理块释放到磁盘中,然后初始化,s_free[0]为原来释放到的那个磁盘块块号.
      索引节点(全是索引表)
      数据区
  文件的共享与安全
    文件共享
      某一个或者某一部分的文件让多个用户共同使用
    文件安全
      文件本身不得未经文件主授权的任何用户存取
      保护方法:对用户的权限进行验证,是指用户在存取文件之前,需要检查用户的存取权限是否符合规定.
    文件路径名加快文件查找
      当前目录
        当前目录是当前用户正在使用的文件所在的目录。
        当指定当前目录后，用户对文件的所有访问都是相对于”当前目录“进行的.
    链接技术
      一个目录中的一个表目直接指向另一个目录表目对应的物理位置.一个表目 的 物理结构项就和另外一个表目的物理结构项一样
    UNIX/Linux的链接
      硬连接
        在索引文件中增加链接计数，用于记录共享数量。
        两个文件的物理结构项是一样的
      符号链接
        创建一个LINK类型的新文件，文件中仅包含被链接文件的路径名
  文件操作与文件备份
    文件的一堆操作
      文件的打开
        首先获得文件路径名
        按照名字查找文件目录结构获得目录项找到FCB
注意,只用找到FCB就可以,对应的数据块不需要
        存入活跃文件目录表
        建立文件读写状态信息表,将访问指针指向文件首
      文件关闭
        检查参数，获得fd；
        在打开文件表和文件读写状态信息表中把对应文件占用的空间释放
        如果“活跃文件目录表”中文件控制块不再使用，则释放该文件控制块所占的内存空间。
      文件创建
        检查参数合法性
        建立一个文件控制块，并在目录表中建目录项。
        将参数填入文件控制块
        分配文件所存放的外存空间（也可在写数据时分配），将文件物理存储信息填入文件控制块中
      文件删除
        检查参数，得到文件名（路径名）
        按名查找文件目录结构得到目录项，找到文件的文件控制块
        按文件控制块中的定位信息（如索引表）释放文件所占外存空间
        从文件目录结构中删除文件控制块及目录项
    文件的一堆表
      进程控制块里面有有打开文件表,记录这个进程打开了什么文件
      对于进程的打开的许多文件有一个读写状态信息表,记录进程读或者写一个文件写到文件的哪里了
      活跃文件目录表,就是记录所有打开过的文件的FCB,读写状态信息表中就指向活跃文件目录表
    文件备份
      周期性转储
        过一个周期就把存储器所有内容存一遍
      增量性转储
        以文件为单位,定期转储上次转储后改过的新文件
  UNIX
    目录项
      每个目录项16字节,其中1~2字节我i对应的索引节点(i节点号),剩下14字节为文件名
    树型目录结构
      每个文件系统都有一个根目录文件，它的辅存i节点是相应文件存储设备上辅存索引区中的第一个。
      文件目录项存储的是索引节点的节点号,要获得文件,要先打开索引节点,在索引节点中根据节点地址寻找文件本身的数据.(或者是目录或者是数据)
    打开文件的结构
      活动i节点表
        当执行打开文件操作时，将文件辅存i节点的有关信息拷贝到主存，形成活动i节点表，他由若干个活动i节点组成。(所有打开过的文件的索引节点(i节点)都放到这个表里面)
      系统打开文件表
        一个文件可以被不同进程打开,所以说构造了一个结构记录所有进程打开过什么文件
          文件的打开模式,读&写?
          引用计数:多少个进程用这个方法打开这个文件
          指向该文件对应的主存索引节点
      用户文件描述符表
        每个进程里面的结构,用来记录这个进程用何种方式打开过何种文件,这个会指向系统打开文件表
  打开磁盘块的总结
    在关系里面,存在一个箭头就代表要打开箭头所指的磁盘块
    n级索引表要获得磁盘块的数据要打开n+1个磁盘块
    对于索引表物理结构文件,已知一个目录,打开目录里面的某个文件需要载入2个磁盘块(文件对应的索引和数据)
    对于其他的,已知一个目录打开某个文件最少一个磁盘块,最多n个